package top.caoayu.pattern;

/**
 * @Author: caoxinyu
 * @Date: 2023/8/31-18:42
 * 单例模式，静态内部类，只有在类被加载时初始化一次，从而避免了线程安全问题
 * 如果直接使用静态变量不使用内部类，多个线程同时 getInstance时，可能都还没初始化，
 * 最后执行结束，出现了两个实例的情况，这时就要使用内部类来保证线程安全，这样就不会出现多个实例的情况了
 */
public class SingleDemo {

    private SingleDemo() {
    }

    public static SingleDemo getInstance() {
        return Generator.SINGLE_DEMO;
    }

    private static class Generator {
        private static final SingleDemo SINGLE_DEMO = new SingleDemo();
    }
}
